package com.ahorresas.modelo.daos;

import com.ahorresas.conexion.Conexion;
import com.ahorresas.modelo.beans.PerfilBean;
import com.ahorresas.modelo.sqls.PerfilSql;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

public class PerfilDao {
    
    Conexion conexion = new Conexion();
    Connection con;
    PerfilSql sql = new PerfilSql();
    
    public PerfilBean buscarPerfil(String idPerfil){
        con = conexion.getConexion();
        PerfilBean perfil = null;
        try {
            PreparedStatement ps = con.prepareStatement(sql.buscarPerfil());
            ps.setInt(1, Integer.valueOf(idPerfil));
            
            ResultSet resultado = ps.executeQuery();
            if(resultado.next()){
                perfil = new PerfilBean();
                perfil.setCodigo(resultado.getInt("codigo"));
                perfil.setNombre(resultado.getString("nombre"));
            }
        } catch (SQLException e) {
            System.out.println(e.getMessage());
        }
        finally{
            conexion.cerrarConexion(con);
        }
        return perfil;
    }
    
    public List<PerfilBean> listarPerfils(){
        con = conexion.getConexion();
        List<PerfilBean> listaPerfiles = new ArrayList<>();
        PerfilBean perfil = null;
        try {
            PreparedStatement ps = con.prepareStatement(sql.listarPerfiles());
            ResultSet resultado = ps.executeQuery();
            while(resultado.next()){
                perfil = new PerfilBean();
                perfil.setCodigo(resultado.getInt("codigo"));
                perfil.setNombre(resultado.getString("nombre"));
                
                listaPerfiles.add(perfil);
            }
        } catch (SQLException e) {
            System.out.println(e.getMessage());
        } finally{
            conexion.cerrarConexion(con);
        }
        return listaPerfiles;
    }
    
    public int crearPerfil(PerfilBean perfil){
        con = conexion.getConexion();
        int resultado = 0;
        try {
            PreparedStatement ps = con.prepareStatement(sql.crearPerfil());
            ps.setString(1, perfil.getNombre());
            
            resultado = ps.executeUpdate();
        } catch (SQLException e) {
            System.out.println(e.getMessage());
        } finally {
            conexion.cerrarConexion(con);
        } 
        return resultado;
    }
    
    public int modificarPerfil(PerfilBean perfil){
        con = conexion.getConexion();
        int resultado = 0;
        try {
            PreparedStatement ps = con.prepareStatement(sql.modificarPerfil());
            ps.setString(1, perfil.getNombre());
            ps.setInt(2, perfil.getCodigo());
            
            resultado = ps.executeUpdate();
        } catch (SQLException e) {
            System.out.println(e.getMessage());
        } finally {
            conexion.cerrarConexion(con);
        }
        return resultado;
    }
    
    public int eliminarPerfil(Integer idPerfil){
        con = conexion.getConexion();
        int resultado = 0;
        try {
            PreparedStatement ps = con.prepareStatement(sql.eliminarPerfil());
            ps.setInt(1, idPerfil);
            
            resultado = ps.executeUpdate();
        } catch (SQLException e) {
            System.out.println(e.getMessage());
        } finally {
            conexion.cerrarConexion(con);
        }
        return resultado;
    }
}